/*
 * Copyright (c) 2024 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 
/**
 * @addtogroup ArkUI_Accessibility
 * @{
 *
 * @brief 描述ArkUI Accessibilit对外支持的Native能力，如查询无障碍节点、上报无障碍事件等。
 *
 * @since 13
 */

/**
 * @file native_interface_accessibility.h
 *
 * @brief 声明用于访问Native Accessibility的API。
 *
 * @library libace_ndk.z.so
 * @syscap SystemCapability.ArkUI.ArkUI.Full
 * @kit ArkUI
 * @include <arkui/native_interface_accessibility.h>
 * @since 13
 */
#ifndef _NATIVE_INTERFACE_ACCESSIBILITY_H
#define _NATIVE_INTERFACE_ACCESSIBILITY_H

#ifdef __cplusplus
#include <cstdint>
#else
#include <stdint.h>
#endif

#ifdef __cplusplus
extern "C"{
#endif

/**
 * @brief 无障碍节点信息，用于向无障碍服务、辅助应用（屏幕朗读）传递节点信息。
 *
 * @since 13
 */
typedef struct ArkUI_AccessibilityElementInfo ArkUI_AccessibilityElementInfo;

/**
 * @brief 无障碍事件信息，无障碍服务或辅助应用要求控件执行操作后，需要发送执行成功事件。
 * 控件自身交互需求要同步状态给无障碍服务或辅助应用时，也需要主动发送事件。
 *
 * @since 13
 */
typedef struct ArkUI_AccessibilityEventInfo ArkUI_AccessibilityEventInfo;

/**
 * @brief 第三方操作provider，承载回调函数实现。
 *
 * @since 13
 */
typedef struct ArkUI_AccessibilityProvider ArkUI_AccessibilityProvider;

/**
 * @brief Action附加字段，对需要执行的Action进行处理的进一步说明。
 *
 * @since 13
 */
typedef struct ArkUI_AccessibilityActionArguments  ArkUI_AccessibilityActionArguments;

/**
 * @brief Accessibility操作类型的枚举。
 *
 * @since 13
 */
typedef enum {
    /** 无效值。 */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_INVALID = 0,
    /** 收到事件后，组件需要对点击做出响应。 */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_CLICK = 0x00000010,
    /** 收到事件后，组件需要对长点击做出响应。 */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_LONG_CLICK = 0x00000020,
    /** 表示获取辅助功能焦点的操作，特定组件已聚焦。 */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_GAIN_ACCESSIBILITY_FOCUS = 0x00000040,
    /** 表示清除辅助功能焦点的操作。 */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_CLEAR_ACCESSIBILITY_FOCUS = 0x00000080,
    /** 滚动组件响应向前滚动动作。 */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_SCROLL_FORWARD = 0x00000100,
    /** 滚动组件响应反向滚动操作。 */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_SCROLL_BACKWARD = 0x00000200,
    /** 复制文本组件的选定内容。 */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_COPY = 0x00000400,
    /** 粘贴文本组件的选定内容。 */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_PASTE = 0x00000800,
    /** 剪切文本组件的选定内容。 */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_CUT = 0x00001000,
    /** 针对文本组件进行选择操作。结合ArkUI_AccessibilityActionArguments使用，
     * 配置selectTextStart，selectTextEnd，selectTextInForWard。进入编辑区选择一段文本内容。
     */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_SELECT_TEXT = 0x00002000,
    /** 设置文本组件的文本内容。 */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_SET_TEXT = 0x00004000,
    /** 针对文本组件设置光标位置。结合ArkUI_AccessibilityActionArguments使用，配置offset设置位置。 */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_SET_CURSOR_POSITION = 0x00100000,
    /** 焦点移动操作中支持查找下一个焦点。
     * 此处的HTML并不代表网页元素，仅用于表示具有可自行查找下一个可见聚焦组件的能力，与Web支持的能力相似。
     * 实现findNextFocusAccessibilityNode的能力才可配置该属性。
     *  @since 15
     */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_NEXT_HTML_ITEM = 0x02000000,
    /** 焦点移动操作中支持查找上一个焦点。
     * 此处的HTML并不代表网页元素，仅用于表示具有可自行查找上一个可见聚焦组件的能力，与Web支持的能力相似。
     * 实现findNextFocusAccessibilityNode的能力才可配置该属性。
     *  @since 15
     */
    ARKUI_ACCESSIBILITY_NATIVE_ACTION_TYPE_PREVIOUS_HTML_ITEM = 0x04000000,
} ArkUI_Accessibility_ActionType;

/**
 * @brief Accessibility事件类型的枚举。
 *
 * @since 13
 */
typedef enum {
    /** 无效值。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_INVALID = 0,
    /** 点击事件，在UI组件响应后发送。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_CLICKED = 0x00000001,
    /** 长点击事件，在UI组件响应后发送。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_LONG_CLICKED = 0x00000002,
    /** 被选中事件，控件响应完成后发送。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_SELECTED = 0x00000004,
    /** 文本更新事件，需要在文本更新时发送。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_TEXT_UPDATE = 0x00000010,
    /** 页面更新事件，当页面跳转、切换、大小更改或移动时发送。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_PAGE_STATE_UPDATE = 0x00000020,
    /** 页面内容发生变化时需要发送事件。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_PAGE_CONTENT_UPDATE = 0x00000800,
    /** scrolled事件，当可滚动的组件上发生滚动事件时，会发送此事件。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_SCROLLED = 0x000001000,
    /** Accessibility焦点事件，在UI组件响应后发送。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_ACCESSIBILITY_FOCUSED = 0x00008000,
    /** Accessibility焦点清除事件，在UI组件响应后发送。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_ACCESSIBILITY_FOCUS_CLEARED = 0x00010000,
    /** 主动请求指定节点聚焦。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_REQUEST_ACCESSIBILITY_FOCUS = 0x02000000,
    /** UI组件上报页面打开事件。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_PAGE_OPEN = 0x20000000,
    /** UI组件上报页面关闭事件。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_PAGE_CLOSE = 0x08000000,
    /** 广播Accessibility事件，请求主动播放指定的内容事件。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_ANNOUNCE_FOR_ACCESSIBILITY = 0x10000000,
    /** 焦点更新事件，用于焦点更新场景。 */
    ARKUI_ACCESSIBILITY_NATIVE_EVENT_TYPE_FOCUS_NODE_UPDATE = 0x10000001,
} ArkUI_AccessibilityEventType;

/**
 * @brief 无障碍操作内容结构。
 *
 * @since 13
 */
typedef struct {
    /** 无障碍操作类型。 */
    ArkUI_Accessibility_ActionType actionType;
    /** 操作描述信息。 */
    const char* description;
} ArkUI_AccessibleAction;

/**
 * @brief 节点所在坐标位置。
 *
 * @since 13
 */
typedef struct {
    /** 左上角X轴坐标位置。 */
    int32_t leftTopX;
    /** 左上角y轴坐标位置。 */
    int32_t leftTopY;
    /** 右下角X轴坐标位置。 */
    int32_t rightBottomX;
    /** 右下角y轴坐标位置。 */
    int32_t rightBottomY;
} ArkUI_AccessibleRect;

/**
 * @brief 用于特定组件设置组件的当前值、最大值、最小值，如Slider、Rating、Progress组件。
 *
 * @since 13
 */
typedef struct {
    /** 最小值。 */
    double min;
    /** 最大值。 */
    double max;
    /** 当前值。 */
    double current;
} ArkUI_AccessibleRangeInfo;

/**
 * @brief 用于特定组件设置组件的行数、列数以及选择模式，如List、Flex、Select、Swiper组件。
 *
 * @since 13
 */
typedef struct {
    /** 行数。 */
    int32_t rowCount;
    /** 列数。 */
    int32_t columnCount;
    /** 0: 仅选择一行，否则选择多行。 */
    int32_t selectionMode;
} ArkUI_AccessibleGridInfo;

/**
 * @brief 用于特定组件设置组件的属性值，如List、Flex、Select、Swiper组件。
 *
 * @since 13
 */
typedef struct {
    /** 是否是标题。 */
    bool heading;
    /** 是否被选中。 */
    bool selected;
    /** 列下标。 */
    int32_t columnIndex;
    /** 行下标。 */
    int32_t rowIndex;
    /** 列跨度。 */
    int32_t columnSpan;
    /** 行跨度。 */
    int32_t rowSpan;
} ArkUI_AccessibleGridItemInfo;

/**
 * @brief Accessibility错误代码状态的枚举。
 *
 * @since 13
 */
typedef enum{
    /** 成功。 */
    ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL = 0,
    /** 失败。 */
    ARKUI_ACCESSIBILITY_NATIVE_RESULT_FAILED = -1,
    /** 无效参数。 */
    ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER = -2,
    /** 内存不足。 */
    ARKUI_ACCESSIBILITY_NATIVE_RESULT_OUT_OF_MEMORY = -3,
} ArkUI_AcessbilityErrorCode;

/**
 * @brief Accessibility搜索类型的枚举。
 *
 * @since 13
 */
typedef enum {
    /** 查询当前节点。 */
    ARKUI_ACCESSIBILITY_NATIVE_SEARCH_MODE_PREFETCH_CURRENT = 0,
    /** 查询父节点。 */
    ARKUI_ACCESSIBILITY_NATIVE_SEARCH_MODE_PREFETCH_PREDECESSORS = 1 << 0,
    /** 查询兄弟节点。 */
    ARKUI_ACCESSIBILITY_NATIVE_SEARCH_MODE_PREFETCH_SIBLINGS = 1 << 1,
    /** 查询下一层孩子节点。 */
    ARKUI_ACCESSIBILITY_NATIVE_SEARCH_MODE_PREFETCH_CHILDREN = 1 << 2,
    /** 查询所有孩子节点。 */
    ARKUI_ACCESSIBILITY_NATIVE_SEARCH_MODE_PREFETCH_RECURSIVE_CHILDREN = 1 << 3,
} ArkUI_AccessibilitySearchMode;

/**
 * @brief Accessibility焦点类型的枚举。
 *
 * @since 13
 */
typedef enum {
    /** 无效值。 */
    ARKUI_ACCESSIBILITY_NATIVE_FOCUS_TYPE_INVALID = -1,
    /** 输入焦点类型。 */
    ARKUI_ACCESSIBILITY_NATIVE_FOCUS_TYPE_INPUT = 1 << 0,
    /** Accessibility焦点类型。 */
    ARKUI_ACCESSIBILITY_NATIVE_FOCUS_TYPE_ACCESSIBILITY = 1 << 1,
} ArkUI_AccessibilityFocusType;

/**
 * @brief Accessibility焦点移动方向的枚举。
 *
 * @since 13
 */
typedef enum {
    /** 无效值。 */
    ARKUI_ACCESSIBILITY_NATIVE_DIRECTION_INVALID = 0,
    /** 焦点向上移动。 */
    ARKUI_ACCESSIBILITY_NATIVE_DIRECTION_UP = 0x00000001,
    /** 焦点向下移动。。 */
    ARKUI_ACCESSIBILITY_NATIVE_DIRECTION_DOWN = 0x00000002,
    /** 焦点向左移动。 */
    ARKUI_ACCESSIBILITY_NATIVE_DIRECTION_LEFT = 0x00000004,
    /** 焦点向右移动。 */
    ARKUI_ACCESSIBILITY_NATIVE_DIRECTION_RIGHT = 0x00000008,
    /** 焦点向下一个可聚焦节点移动，基于查询请求中指定的基准节点。 */
    ARKUI_ACCESSIBILITY_NATIVE_DIRECTION_FORWARD = 0x00000010,
    /** 焦点向上一个可聚焦节点移动，基于查询请求中指定的基准节点。 */
    ARKUI_ACCESSIBILITY_NATIVE_DIRECTION_BACKWARD = 0x00000020,
} ArkUI_AccessibilityFocusMoveDirection;

/**
 * @brief 提供封装的ArkUI_AccessibilityElementInfoList实例。
 *
 * @since 13
 */
typedef struct ArkUI_AccessibilityElementInfoList ArkUI_AccessibilityElementInfoList;

/**
 * @brief 第三方操作provider回调函数结构定义，需要第三方平台实现的相关函数，
 * 通过OH_ArkUI_AccessibilityProviderRegisterCallback注册到系统侧。
 *
 * @since 13
 */
typedef struct ArkUI_AccessibilityProviderCallbacks {
    /**
    * @brief 由接入方平台实现的回调函数，注册给系统侧调用。查询指定节点的节点信息。支持多实例场景。
    *
    * @param elementId 无障碍元素的唯一编号。
    * @param mode 表示无障碍搜索模式。
    * @param requestId 表示请求ID。
    * @param elementList 表示无障碍元素信息列表。
    * @return 如果操作成功，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
    *         如果参数错误，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
    */
    int32_t (*findAccessibilityNodeInfosById)(int64_t elementId, ArkUI_AccessibilitySearchMode mode,
        int32_t requestId, ArkUI_AccessibilityElementInfoList* elementList);
    /**
    * @brief 由接入方平台实现的回调函数，注册给系统侧调用。基于指定的节点，查询满足指定text内容的节点信息。
    *
    * @param elementId 无障碍元素的唯一编号。
    * @param text 表示无障碍文本。
    * @param requestId 表示请求ID。
    * @param elementList 表示无障碍元素信息列表。
    * @return 如果操作成功，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
    *         如果参数错误，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
    */
    int32_t (*findAccessibilityNodeInfosByText)(int64_t elementId, const char* text, int32_t requestId,
        ArkUI_AccessibilityElementInfoList* elementList);
    /**
    * @brief 当需要基于指定节点获取焦点元素信息时调用。
    *
    * @param elementId 无障碍元素的唯一编号。
    * @param focusType 表示焦点的类型。
    * @param requestId 表示请求ID。
    * @param elementInfo 表示无障碍元素信息。
    * @return 如果操作成功，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
    *         如果参数错误，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
    */
    int32_t (*findFocusedAccessibilityNode)(int64_t elementId, ArkUI_AccessibilityFocusType focusType,
        int32_t requestId, ArkUI_AccessibilityElementInfo* elementInfo);
    /**
    * @brief 根据参考节点查询可以聚焦的节点，根据模式和方向查询下一个可以聚焦的节点。
    *
    * @param elementId 无障碍元素的唯一编号。
    * @param direction 表示查找方向。
    * @param requestId 表示请求ID。
    * @param elementInfo 表示无障碍元素信息。
    * @return 如果操作成功，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
    *         如果参数错误，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
    */
    int32_t (*findNextFocusAccessibilityNode)(
        int64_t elementId, ArkUI_AccessibilityFocusMoveDirection direction,
        int32_t requestId, ArkUI_AccessibilityElementInfo* elementInfo);
    /**
    * @brief 在指定节点上执行Action操作。
    *
    * @param elementId 无障碍元素的唯一编号。
    * @param action 表示要执行的动作。
    * @param actionArguments 表示动作的参数。
    * @param requestId 表示请求的ID。
    * @return 如果操作成功，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
    *         如果参数错误，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
    */
    int32_t (*executeAccessibilityAction)(int64_t elementId, ArkUI_Accessibility_ActionType action,
        ArkUI_AccessibilityActionArguments *actionArguments, int32_t requestId);
    /**
    * @brief 清除当前焦点节点的焦点状态。
    *
    * @return 如果操作成功，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
    *         如果参数错误，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
    */
    int32_t (*clearFocusedFocusAccessibilityNode)();
    /**
    * @brief 查询指定节点的当前光标位置。
    *
    * @param elementId 无障碍元素的唯一编号。
    * @param requestId 表示请求的ID。
    * @param index 表示光标位置的索引。
    * @return 如果操作成功，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
    *         如果参数错误，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
    */
    int32_t (*getAccessibilityNodeCursorPosition)(int64_t elementId, int32_t requestId, int32_t* index);
} ArkUI_AccessibilityProviderCallbacks;

/**
 * @brief 注册回调函数。
 *
 * @param provider 表示指向ArkUI_AccessibilityProvider实例的指针。
 * @param callbacks 表示指向GetAccessibilityNodeCursorPosition实例的指针。
 * @return 如果操作成功，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
 *         如果参数错误，则返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
 * @since 13
 */
int32_t OH_ArkUI_AccessibilityProviderRegisterCallback(
    ArkUI_AccessibilityProvider* provider, ArkUI_AccessibilityProviderCallbacks* callbacks);

/**
 * @brief 适配多实例场景第三方操作provider回调函数结构定义，需要第三方平台实现的相关函数，
 * 通过OH_ArkUI_AccessibilityProviderRegisterCallbackWithInstance注册到系统侧。
 * @since 15
 */
typedef struct ArkUI_AccessibilityProviderCallbacksWithInstance {
    /**
    * @brief 由接入方平台实现的回调函数，注册给系统侧调用。基于指定的节点，查询所需的节点信息。支持多实例场景。
    * @param instanceId 第三方框架的实例编码。
    * @param elementId 无障碍元素的唯一编号。
    * @param mode 无障碍服务的搜索模式。
    * @param requestId 请求id，用于关联请求过程，方便问题定位。建议日志打印时附带输出该信息，方便定位。
    * @param elementList 本次查询到的所有无障碍元素列表。
    * @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
    *         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
    */
    int32_t (*findAccessibilityNodeInfosById)(const char* instanceId, int64_t elementId,
        ArkUI_AccessibilitySearchMode mode, int32_t requestId, ArkUI_AccessibilityElementInfoList* elementList);
    /**
    * @brief 由接入方平台实现的回调函数，注册给系统侧调用。基于指定的节点，查询满足指定组件文本内容的节点信息。支持多实例场景。
    * @param instanceId 第三方框架的实例编码。
    * @param elementId 无障碍元素的唯一编号。
    * @param text 组件需要匹配的文本内容。
    * @param requestId 请求id，用于关联请求过程，方便问题定位。建议日志打印时附带输出该信息，方便定位。
    * @param elementList 本次查询到的所有无障碍元素列表。
    * @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
    *         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
    */
    int32_t (*findAccessibilityNodeInfosByText)(const char* instanceId, int64_t elementId, const char* text,
        int32_t requestId, ArkUI_AccessibilityElementInfoList* elementList);
    /**
    * @brief 由接入方平台实现的回调函数，注册给系统侧调用。从指定节点查找已经聚焦的节点。支持多实例场景。
    * @param instanceId 第三方框架的实例编码。
    * @param elementId 无障碍元素的唯一编号。
    * @param focusType 焦点类型。
    * @param requestId 请求id，用于关联请求过程，方便问题定位。建议日志打印时附带输出该信息，方便定位。
    * @param elementInfo 本次查询到的无障碍元素。
    * @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
    *         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
    */
    int32_t (*findFocusedAccessibilityNode)(const char* instanceId, int64_t elementId,
        ArkUI_AccessibilityFocusType focusType, int32_t requestId, ArkUI_AccessibilityElementInfo* elementInfo);
    /**
    * @brief 由接入方平台实现的回调函数，注册给系统侧调用。从指定节点查询指定方向的节点。支持多实例场景。
    * @param instanceId 第三方框架的实例编码。
    * @param elementId 无障碍元素的唯一编号。
    * @param direction 搜索方向。
    * @param requestId 请求id，用于关联请求过程，方便问题定位。建议日志打印时附带输出该信息，方便定位。
    * @param elementInfo 本次查询到的无障碍元素。
    * @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
    *         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
    */
    int32_t (*findNextFocusAccessibilityNode)(
        const char* instanceId, int64_t elementId, ArkUI_AccessibilityFocusMoveDirection direction,
        int32_t requestId, ArkUI_AccessibilityElementInfo* elementInfo);
    /**
    * @brief 由接入方平台实现的回调函数，注册给系统侧调用。对指定节点执行指定的操作。支持多实例场景。
    * @param instanceId 第三方框架的实例编码。
    * @param elementId 无障碍元素的唯一编号。
    * @param action 需要执行的操作，比如聚焦、点击和长按等。
    * @param actionArguments 控制操作的参数。
    * @param requestId 请求id，用于关联请求过程，方便问题定位。建议日志打印时附带输出该信息，方便定位。
    * @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
    *         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
    */
    int32_t (*executeAccessibilityAction)(const char* instanceId, int64_t elementId,
        ArkUI_Accessibility_ActionType action, ArkUI_AccessibilityActionArguments *actionArguments, int32_t requestId);
    /**
    * @brief 由接入方平台实现的回调函数，注册给系统侧调用。 清除当前获焦的节点。支持多实例场景。
    * @param instanceId 第三方框架的实例编码。
    * @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
    *         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
    */
    int32_t (*clearFocusedFocusAccessibilityNode)(const char* instanceId);
    /**
    * @brief 由接入方平台实现的回调函数，注册给系统侧调用。获取当前组件中（文本组件）光标位置。支持多实例场景。
    * @param instanceId 第三方框架的实例编码。
    * @param elementId 无障碍元素的唯一编号。
    * @param requestId 请求id，用于关联请求过程，方便问题定位。建议日志打印时附带输出该信息，方便定位。
    * @param index 光标的位置结果。
    * @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
    *         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
    */
    int32_t (*getAccessibilityNodeCursorPosition)(const char* instanceId, int64_t elementId,
        int32_t requestId, int32_t* index);
} ArkUI_AccessibilityProviderCallbacksWithInstance;
/**
 * @brief 多实例场景第三方平台注册回调函数。
 * @param instanceId 第三方平台接入的实例ID，用于区分多实例场景中不同的第三方实例，ID由第三方平台指定与维护。
 * @param provider 第三方平台接入provider句柄。
 * @param callbacks 表示指向ArkUI_AccessibilityProviderCallbacksWithInstance实例的指针。
 * @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
 *         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
 * @since 15
 */
int32_t OH_ArkUI_AccessibilityProviderRegisterCallbackWithInstance(const char* instanceId,
    ArkUI_AccessibilityProvider* provider, ArkUI_AccessibilityProviderCallbacksWithInstance* callbacks);

/**
 * @brief 主动上报事件接口，通知无障碍服务。
 * 
 * @param provider 第三方平台接入provider句柄。
 * @param eventInfo 表示指向Accessibility事件信息的指针。
 * @param callback 表示指向SendAccessibilityAsyncEvent回调。
 * @since 13
 */
void OH_ArkUI_SendAccessibilityAsyncEvent(
    ArkUI_AccessibilityProvider* provider, ArkUI_AccessibilityEventInfo* eventInfo,
    void (*callback)(int32_t errorCode));

/**
 * @brief 在指定的list中增加element成员，并返回element结构。
 * 
 * @param list 指定的ArkUI_AccessibilityElementInfoList结构，新创建的ElementInfo成员加入该list后返回给函数调用方。
 * @return 返回创建完成的ArkUI_AccessibilityElementInfo结构指针，如果创建失败返回NULL。
 * @since 13
 */
ArkUI_AccessibilityElementInfo* OH_ArkUI_AddAndGetAccessibilityElementInfo(
    ArkUI_AccessibilityElementInfoList* list);
/**
* @brief 为ArkUI_AccessibilityElementInfo设置componentId。
*
* @param elementInfo ArkUI_AccessibilityElementInfo指针。
* @param elementId 无障碍元素的唯一编号。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetElementId(
    ArkUI_AccessibilityElementInfo* elementInfo, int32_t elementId);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置parentId。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param parentId 表示元素的父组件无障碍编号。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetParentId(
    ArkUI_AccessibilityElementInfo* elementInfo, int32_t parentId);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置组件类型。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param componentType 表示元素所属的组件类型。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetComponentType(
    ArkUI_AccessibilityElementInfo* elementInfo, const char* componentType);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置组件文本内容。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param contents 表示元素被无障碍服务所识别的文本内容。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetContents(
    ArkUI_AccessibilityElementInfo* elementInfo, const char* contents);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置提示文本。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param hintText 表示提示文本。默认为""。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetHintText(
    ArkUI_AccessibilityElementInfo* elementInfo, const char* hintText);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置Accessibility文本。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param accessibilityText 表示Accessibility文本。默认为""。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetAccessibilityText(
    ArkUI_AccessibilityElementInfo* elementInfo, const char* accessibilityText);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置Accessibility描述信息。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param accessibilityDescription 表示Accessibility描述信息。默认为""。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetAccessibilityDescription(
    ArkUI_AccessibilityElementInfo* elementInfo, const char* accessibilityDescription);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置childCount和childNodeIds。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param childCount 表示孩子节点数量。默认值为0。
* @param childNodeIds 表示孩子节点id集合。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetChildNodeIds(
    ArkUI_AccessibilityElementInfo* elementInfo, int32_t childCount, int64_t* childNodeIds);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置operationActions。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param operationCount 组件支持的action数量。
* @param operationActions 组件支持的action。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetOperationActions(ArkUI_AccessibilityElementInfo* elementInfo,
    int32_t operationCount, ArkUI_AccessibleAction* operationActions);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置屏幕区域。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param screenRect 表示屏幕区域。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetScreenRect(
    ArkUI_AccessibilityElementInfo* elementInfo, ArkUI_AccessibleRect* screenRect);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置是否可查。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param checkable 表示是否可查。true表示可查，false表示不可查。默认值为false。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetCheckable(
    ArkUI_AccessibilityElementInfo* elementInfo, bool checkable);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置是否被检查。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param checked 表示是否被检查。true表示被检查过，false表示未被检查。默认值false。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetChecked(
    ArkUI_AccessibilityElementInfo* elementInfo, bool checked);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置是否可聚焦。
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param focusable 表示是否可聚焦。true表示可聚焦，false表示不可聚焦。默认值false。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetFocusable(
    ArkUI_AccessibilityElementInfo* elementInfo, bool focusable);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置是否聚焦。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param isFocused 表示是否聚焦。true表示已聚焦，false表示未聚焦。默认值false。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetFocused(
    ArkUI_AccessibilityElementInfo* elementInfo, bool isFocused);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置是否可见。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param isVisible 表示是否可见。true表示可见，false表示不可见。默认值false。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetVisible(
    ArkUI_AccessibilityElementInfo* elementInfo, bool isVisible);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置accessibilityFocused。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param accessibilityFocused 表示是否被无障碍聚焦。true表示被无障碍聚焦，false表示未被无障碍聚焦。默认值false。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetAccessibilityFocused(
    ArkUI_AccessibilityElementInfo* elementInfo, bool accessibilityFocused);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置是否被选中。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param selected 表示是否被选中。true表示被选中，false表示未选中。默认值false。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetSelected(
    ArkUI_AccessibilityElementInfo* elementInfo, bool selected);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置是否支持点击。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param clickable 表示是否支持点击。true表示支持，false表示不支持。默认值false。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetClickable(
    ArkUI_AccessibilityElementInfo* elementInfo, bool clickable);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置是否支持长按。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param longClickable 表示是否支持长按。true表示支持，false表示不支持。默认值false。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetLongClickable(
    ArkUI_AccessibilityElementInfo* elementInfo, bool longClickable);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置是否启用。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param isEnable 表示是否启用。true表示启用，false表示未启用。默认值false。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetEnabled(
    ArkUI_AccessibilityElementInfo* elementInfo, bool isEnabled);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置是否为密码。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param isPassword 表示是否为密码。true表示是密码，false表示不是密码。默认值false。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetIsPassword(
    ArkUI_AccessibilityElementInfo* elementInfo, bool isPassword);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置是否支持滚动。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param scrollable 表示是否支持滚动。true表示支持，false表示不支持。默认值false。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetScrollable(
    ArkUI_AccessibilityElementInfo* elementInfo, bool scrollable);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置是否支持编辑。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param editable 表示是否支持编辑。true表示支持，false表示不支持。默认值false。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetEditable(
    ArkUI_AccessibilityElementInfo* elementInfo, bool editable);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置isHint。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param isHint 表示是否为提示状态。true表示是提示状态，false表示不是提示状态。在提示状态下才会获取hintText信息。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetIsHint(
    ArkUI_AccessibilityElementInfo* elementInfo, bool isHint);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置rangeInfo。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param rangeInfo 表示特定组件的当前值、最大值、最小值。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetRangeInfo(
    ArkUI_AccessibilityElementInfo* elementInfo, ArkUI_AccessibleRangeInfo* rangeInfo);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置gridInfo。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param gridInfo 表示特定组件的行数、列数以及选择模式。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetGridInfo(
    ArkUI_AccessibilityElementInfo* elementInfo, ArkUI_AccessibleGridInfo* gridInfo);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置gridItem。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param gridItem 表示特定组件的属性值。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetGridItemInfo(
    ArkUI_AccessibilityElementInfo* elementInfo, ArkUI_AccessibleGridItemInfo* gridItem);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置selectedTextStart。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param selectedTextStart 文本类控件使用，设置选中文本的起始位置。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetSelectedTextStart(
    ArkUI_AccessibilityElementInfo* elementInfo, int32_t selectedTextStart);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置selectedTextEnd。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param selectedTextEnd 文本类控件使用，设置选中文本的结束位置。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetSelectedTextEnd(
    ArkUI_AccessibilityElementInfo* elementInfo, int32_t selectedTextEnd);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置currentItemIndex。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param currentItemIndex 当前获焦控件的位置信息。List、Select、Swiper、Tab_Bar等组件使用。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetCurrentItemIndex(
    ArkUI_AccessibilityElementInfo* elementInfo, int32_t currentItemIndex);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置startItemIndex。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param startItemIndex 当前屏幕中显示的第一个元素的位置信息。List、Select、Swiper、Tab_Bar等组件使用。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetStartItemIndex(
    ArkUI_AccessibilityElementInfo* elementInfo, int32_t startItemIndex);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置endItemIndex。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param endItemIndex 当前屏幕中显示的最后一个元素的位置信息。List、Select、Swiper、Tab_Bar等组件使用。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetEndItemIndex(
    ArkUI_AccessibilityElementInfo* elementInfo, int32_t endItemIndex);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置itemCount。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param itemCount 表示特定组件的元素总数。如List、Select、Swiper、Tab_Bar等组件使用。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetItemCount(
    ArkUI_AccessibilityElementInfo* elementInfo, int32_t itemCount);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置offset。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param offset 对于可滚动类控件，如List、Grid，内容区相对于元素顶部坐标的滚动像素偏移量。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetAccessibilityOffset(
    ArkUI_AccessibilityElementInfo* elementInfo, int32_t offset);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置无障碍分组。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param accessibilityGroup 表示是否启用无障碍分组。true表示启用，false表示不启用。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetAccessibilityGroup(
    ArkUI_AccessibilityElementInfo* elementInfo, bool accessibilityGroup);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置无障碍重要性。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param accessibilityLevel 表示组件的无障碍重要性，用于控制某个组件是否被无障碍辅助服务所识别。
    - auto：由系统根据当前组件的属性自动判断该组件是否重要，决定是否让无障碍辅助服务识别该组件。
    - yes：表示该组件重要，允许无障碍辅助服务识别该组件。
    - no：表示该组件不重要，不允许无障碍辅助服务识别该组件。
    - no-hide-descendants：表示该组件及其子孙节点都不重要，不允许无障碍辅助服务识别该组件及其子孙节点。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetAccessibilityLevel(
    ArkUI_AccessibilityElementInfo* elementInfo, const char* accessibilityLevel);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置zIndex。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param zIndex 组件z序，用于控制元素在垂直于屏幕的z轴上的位置。UITest需要使用。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetZIndex(
    ArkUI_AccessibilityElementInfo* elementInfo, int32_t zIndex);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置透明度。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param opacity 表示透明度。其取值范围是0到1，其中1表示完全不透明，0表示完全透明。UITest需要使用。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetAccessibilityOpacity(
    ArkUI_AccessibilityElementInfo* elementInfo, float opacity);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置背景色。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param backgroundColor 表示背景色。UITest需要使用。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetBackgroundColor(
    ArkUI_AccessibilityElementInfo* elementInfo, const char* backgroundColor);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置背景图片。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param backgroundImage 表示背景图片。UITest需要使用。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetBackgroundImage(
    ArkUI_AccessibilityElementInfo* elementInfo, const char* backgroundImage);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置模糊度。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param blur 表示模糊度。UITest需要使用。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetBlur(
    ArkUI_AccessibilityElementInfo* elementInfo, const char* blur);

/**
* @brief 为ArkUI_AccessibilityElementInfo设置hitTest模式。
*
* @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
* @param hitTestBehavior 表示hitTest模式，取值范围参考[HitTestMode](./arkui-ts/ts-appendix-enums.md#hittestmode9)。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityElementInfoSetHitTestBehavior(
    ArkUI_AccessibilityElementInfo* elementInfo, const char* hitTestBehavior);

/**
 * @brief 创建一个ArkUI_AccessibilityElementInfo对象，创建后需要调用OH_ArkUI_DestoryAccessibilityElementInfo释放。
 *
 * @return 返回ArkUI_AccessibilityElementInfo对象。
 * @since 13
 */
ArkUI_AccessibilityElementInfo* OH_ArkUI_CreateAccessibilityElementInfo(void);

/**
 * @brief 销毁一个ArkUI_AccessibilityElementInfo对象。
 *
 * @param elementInfo 表示指向ArkUI_AccessibilityElementInfo的指针。
 * @since 13
 */
void OH_ArkUI_DestoryAccessibilityElementInfo(ArkUI_AccessibilityElementInfo* elementInfo);

/**
 * @brief 创建一个ArkUI_AccessibilityEventInfo对象，创建后需要调用OH_ArkUI_DestoryAccessibilityEventInfo释放。
 *
 * @return 返回ArkUI_AccessibilityEventInfo对象。
 * @since 13
 */
ArkUI_AccessibilityEventInfo* OH_ArkUI_CreateAccessibilityEventInfo(void);

/**
 * @brief 销毁ArkUI_AccessibilityEventInfo对象。
 *
 * @param eventInfo 需要被销毁的ArkUI_AccessibilityEventInfo对象。
 * @since 13
 */
void OH_ArkUI_DestoryAccessibilityEventInfo(ArkUI_AccessibilityEventInfo* eventInfo);

/**
* @brief 为ArkUI_AccessibilityEventInfo设置事件类型。
*
* @param eventInfo 表示事件信息。
* @param eventType 表示事件类型。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityEventSetEventType(
    ArkUI_AccessibilityEventInfo* eventInfo,  ArkUI_AccessibilityEventType eventType);
/**
* @brief 为ArkUI_AccessibilityEventInfo设置textAnnouncedForAccessibility。
*
* @param eventInfo 表示事件信息。
* @param textAnnouncedForAccessibility 表示textAnnouncedForAccessibility。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityEventSetTextAnnouncedForAccessibility(
    ArkUI_AccessibilityEventInfo* eventInfo,  const char* textAnnouncedForAccessibility);

/**
* @brief 为ArkUI_AccessibilityEventInfo设置requestFocusId。
*
* @param eventInfo 表示事件信息。
* @param requestFocusId 表示请求焦点id。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityEventSetRequestFocusId(
    ArkUI_AccessibilityEventInfo* eventInfo,  int32_t requestFocusId);

/**
* @brief 为ArkUI_AccessibilityEventInfo设置elementInfo。
*
* @param eventInfo 表示事件信息。
* @param elementInfo 表示ArkUI_AccessibilityElementInfo元素信息。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_AccessibilityEventSetElementInfo(
    ArkUI_AccessibilityEventInfo* eventInfo,  ArkUI_AccessibilityElementInfo* elementInfo);

/**
* @brief 获取ArkUI_AccessibilityActionArguments中指定key的value值。
*
* @param arguments 表示ArkUI_AccessibilityActionArguments对象信息。
* @param key 表示key。
* @param value 表示value。
* @return 成功返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_SUCCESSFUL}。
*         参数错误返回 {@link ARKUI_ACCESSIBILITY_NATIVE_RESULT_BAD_PARAMETER}。
* @since 13
*/
int32_t OH_ArkUI_FindAccessibilityActionArgumentByKey(
    ArkUI_AccessibilityActionArguments* arguments, const char* key, char** value);
#ifdef __cplusplus
};
#endif
#endif // _NATIVE_INTERFACE_ACCESSIBILITY_H
